﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Ext.Net;
using ENT.GP.Core.Lookup;
using ENT.GP.Core.Core;
using System.Configuration;
using ENT.GP.Core.Proyecto;
using entgp.Code;

public partial class Supervision_wucInformeSupervision : ControlesUsuario
{

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            txtFecha.Text = DateTime.Now.ToString("dd/MM/yyyy");
            ActividadLookup.InvalidateCache();
            TipoRecursoLookup.InvalidateCache();
        sActividad.DataSource = ActividadLookup.GetNameValueList(this.IdEmp);
        sActividad.DataBind();
        sTipoRecurso.DataSource = TipoRecursoLookup.GetNameValueList(this.IdEmp);
        sTipoRecurso.DataBind();
        }
    }

    public void btnAceptar_Click(object sender, DirectEventArgs e)
    {
        try
        {
            int id,idActividad;
            string jsonDocumentos, descripcion;
            jsonDocumentos = e.ExtraParams["Documentos"];
            descripcion = e.ExtraParams["Descripcion"];
            int.TryParse(e.ExtraParams["Id"],out id);
            int.TryParse(e.ExtraParams["Actividad"], out idActividad);
            var proyecto = Proyecto.GetProyecto(id);
            var supervision = ProyectoSupervision.NewProyectoSupervision();
            StoreDataHandler sdhDocumentos = new StoreDataHandler(jsonDocumentos);
            ChangeRecords<Documento> crDocumentos = sdhDocumentos.ObjectData<Documento>();

            foreach (Documento documento in crDocumentos.Deleted)
            {
                int indice = supervision.DocumentosSupervision.IndexOf(supervision.DocumentosSupervision.FirstOrDefault(x => x.Id == documento.Id));
                supervision.DocumentosSupervision.RemoveAt(indice);
            }

            foreach (Documento documento in crDocumentos.Created)
            {
                supervision.DocumentosSupervision.Add(documento);
            }
            supervision.Fecha = DateTime.Now;
            supervision.Descripcion = descripcion;
            supervision.ActividadId = idActividad;
            supervision.IdProyecto = id;
            
            proyecto.ProyectosSupervisiones.Add(supervision);

            proyecto = proyecto.Save();
        }
        catch (Exception ex)
        {
            Util.RegistarLog(ex);
        }
    }

    

    /// <summary>
    /// Permite subir un docuemntos de tipo adendum
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    public void SubirArchivo_Click(object sender, DirectEventArgs e)
    {
        string tpl    = "Subido el archivo Correctamente: {0}<br/>Size: {1} bytes";
        string nombre = "";
        string ruta   = "";
        try
        {

            nombre = fufArchivosAdendum.PostedFile.FileName;
            nombre = UtilP.FormarNombre(nombre);
            //ruta   = MapPath(string.Format("~/{0}{1}", ConfigurationManager.AppSettings.Get("PathFiles"), nombre));
            ruta = MapPath(string.Format("{0}load/{1}", new UtilRA().RutaArchivosEmpresa, nombre));
            fufArchivosAdendum.PostedFile.SaveAs(ruta);
            fufArchivosAdendum.SetValue(nombre);

        }
        catch (Exception ex)
        {
            e.Success = false;
            Util.RegistarLog(ex.ToString());
        }

        if (this.fufArchivosAdendum.HasFile)
        {
            X.Msg.Show(new MessageBoxConfig
            {
                Buttons = MessageBox.Button.OK,
                Icon = MessageBox.Icon.INFO,
                Title = "Éxito",
                Message = string.Format(tpl, this.fufArchivosAdendum.PostedFile.FileName, this.fufArchivosAdendum.PostedFile.ContentLength)
            });
            hiTipo.SetValue(this.fufArchivosAdendum.PostedFile.ContentType);
            //hiTipo.SetValue(nombre.Substring(nombre.IndexOf(".") + 1));
            hiTamano.SetValue(this.fufArchivosAdendum.PostedFile.ContentLength);
            hiRuta.SetValue(nombre);
            
            e.Success = true;
        }
        else
        {
            e.Success = false;
            X.Msg.Show(new MessageBoxConfig
            {
                Buttons = MessageBox.Button.OK,
                Icon = MessageBox.Icon.ERROR,
                Title = "Fallo",
                Message = "Archivo No subido!!!"
            });
        }
    }

    

    protected void Command_Click(object sender, DirectEventArgs e)
    {
        try
        {
            //string ruta = string.Format("{0}{1}", UtilP.RUTA_ARCHIVOS, e.ExtraParams["Nombre"]);
            string   nombre = e.ExtraParams["Nombre"];
            string ruta     = string.Format("{0}load/{1}", new UtilRA().RutaLeerArchivosEmpresa, nombre);
            string[] lines  = nombre.Split(',');
            Boolean ifBodyStyle = false;
            if (lines.Length!=0)
            {
               
                if (lines[0] == "data:image/png;base64")
                {
                    //winVerArchivo.BodyStyle = "background:url(" + nombre + ")top left no-repeat";
                    winVerArchivo.SetTitle("Imagen");
                    winVerArchivo.Html = "<center><img  alt='Base64 string' src='" + nombre + "'/></center>";
                    ifBodyStyle = true;
                }
            }
          
            if (ifBodyStyle == false)
            {
                winVerArchivo.LoadContent(ruta);

                winVerArchivo.SetTitle(nombre);
            }

            winVerArchivo.Show();
        }
        catch (Exception ex)
        {
            Util.RegistarLog(ex.ToString());
        }

    }

    

    public void Limpiar()
    {
        txtDescripcion.Text = "";
        cbxActividad.Reset();
        cbxTipoRecurso.Reset();
        //fufArchivo.Reset();
    }

   

    private void Mensaje(string msg)
    {
        X.Msg.Show(new MessageBoxConfig
        {
            Buttons = MessageBox.Button.OK,
            Icon = MessageBox.Icon.ERROR,
            Title = "Fail",
            Message = msg
        });
    }
    public void Show(int Id)
    {
        hidIdProyecto.Text=(Id.ToString());
        winSupervision.Show();
        btnAceptar.Show();
        btnCancelar.Text = "Cancelar";
    }
    public void Show(int Id,string operacion)
    {
        if (operacion=="Ver")
        {
            var supervision = ProyectoSupervision.GetProyectoSupervision(Id);
            hidIdProyecto.Text = supervision.Id.ToString();
            txtDescripcion.Text = supervision.Descripcion;
            txtFecha.Text = supervision.Fecha.ToShortDateString();
            cbxActividad.SetValue(supervision.ActividadId);
            StoreArchivos.DataSource = supervision.DocumentosSupervision;
            StoreArchivos.DataBind();
            btnAceptar.Hide();
            btnCancelar.Text = "Cerrar";
        }
        
        winSupervision.Show();
    }
}
